home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac Interfaces / CIncludes / QD3DStorage.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  7.8 KB  |  289 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DStorage.h
  3.  
  4.      Contains:    Abstraction to deal with various types of stream-based storage devices        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.0
  8.  
  9.      Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DSTORAGE__
  18. #define __QD3DSTORAGE__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23.  
  24. #if TARGET_OS_MAC
  25. #ifndef __MACTYPES__
  26. #include <MacTypes.h>
  27. #endif
  28. #ifndef __FILES__
  29. #include <Files.h>
  30. #endif
  31. #endif  /* TARGET_OS_MAC */
  32.  
  33.  
  34. #if TARGET_OS_WIN32
  35.     #include <windows.h>
  36. #endif /* TARGET_OS_WIN32 */
  37.  
  38. #include <stdio.h>
  39.  
  40.  
  41. #if PRAGMA_ONCE
  42. #pragma once
  43. #endif
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #if PRAGMA_IMPORT
  50. #pragma import on
  51. #endif
  52.  
  53. #if PRAGMA_STRUCT_ALIGN
  54.     #pragma options align=power
  55. #elif PRAGMA_STRUCT_PACKPUSH
  56.     #pragma pack(push, 2)
  57. #elif PRAGMA_STRUCT_PACK
  58.     #pragma pack(2)
  59. #endif
  60.  
  61. #if PRAGMA_ENUM_ALWAYSINT
  62.     #pragma enumsalwaysint on
  63. #elif PRAGMA_ENUM_OPTIONS
  64.     #pragma option enum=int
  65. #elif PRAGMA_ENUM_PACK
  66.     #if __option(pack_enums)
  67.         #define PRAGMA_ENUM_PACK__QD3DSTORAGE__
  68.     #endif
  69.     #pragma options(!pack_enums)
  70. #endif
  71.  
  72. /******************************************************************************
  73.  **                                                                             **
  74.  **                                Storage Routines                             **
  75.  **                                                                             **
  76.  *****************************************************************************/
  77. EXTERN_API_C( TQ3ObjectType )
  78. Q3Storage_GetType                (TQ3StorageObject         storage);
  79.  
  80. EXTERN_API_C( TQ3Status )
  81. Q3Storage_GetSize                (TQ3StorageObject         storage,
  82.                                  unsigned long *        size);
  83.  
  84. /* 
  85.  *    Reads "dataSize" bytes starting at offset in storage, copying into data. 
  86.  *    sizeRead returns the number of bytes filled in. 
  87.  *    
  88.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeRead
  89.  */
  90. EXTERN_API_C( TQ3Status )
  91. Q3Storage_GetData                (TQ3StorageObject         storage,
  92.                                  unsigned long             offset,
  93.                                  unsigned long             dataSize,
  94.                                  unsigned char *        data,
  95.                                  unsigned long *        sizeRead);
  96.  
  97. /* 
  98.  *    Write "dataSize" bytes starting at offset in storage, copying from data. 
  99.  *    sizeWritten returns the number of bytes filled in. 
  100.  *    
  101.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeWritten
  102.  */
  103. EXTERN_API_C( TQ3Status )
  104. Q3Storage_SetData                (TQ3StorageObject         storage,
  105.                                  unsigned long             offset,
  106.                                  unsigned long             dataSize,
  107.                                  const unsigned char *    data,
  108.                                  unsigned long *        sizeWritten);
  109.  
  110. /******************************************************************************
  111.  **                                                                             **
  112.  **                             Memory Storage Prototypes                         **
  113.  **                                                                             **
  114.  *****************************************************************************/
  115. EXTERN_API_C( TQ3ObjectType )
  116. Q3MemoryStorage_GetType            (TQ3StorageObject         storage);
  117.  
  118. /*
  119.  * These calls COPY the buffer into QD3D space
  120.  */
  121. EXTERN_API_C( TQ3StorageObject )
  122. Q3MemoryStorage_New                (const unsigned char *    buffer,
  123.                                  unsigned long             validSize);
  124.  
  125. EXTERN_API_C( TQ3Status )
  126. Q3MemoryStorage_Set                (TQ3StorageObject         storage,
  127.                                  const unsigned char *    buffer,
  128.                                  unsigned long             validSize);
  129.  
  130. /*
  131.  * These calls use the pointer given - you must dispose it when you're through
  132.  */
  133. EXTERN_API_C( TQ3StorageObject )
  134. Q3MemoryStorage_NewBuffer        (unsigned char *        buffer,
  135.                                  unsigned long             validSize,
  136.                                  unsigned long             bufferSize);
  137.  
  138. EXTERN_API_C( TQ3Status )
  139. Q3MemoryStorage_SetBuffer        (TQ3StorageObject         storage,
  140.                                  unsigned char *        buffer,
  141.                                  unsigned long             validSize,
  142.                                  unsigned long             bufferSize);
  143.  
  144. EXTERN_API_C( TQ3Status )
  145. Q3MemoryStorage_GetBuffer        (TQ3StorageObject         storage,
  146.                                  unsigned char **        buffer,
  147.                                  unsigned long *        validSize,
  148.                                  unsigned long *        bufferSize);
  149.  
  150. #if TARGET_OS_MAC
  151. /******************************************************************************
  152.  **                                                                             **
  153.  **                                Macintosh Handles Prototypes                 **
  154.  **                                                                             **
  155.  *****************************************************************************/
  156. /* Handle Storage is a subclass of Memory Storage */
  157. EXTERN_API_C( TQ3StorageObject )
  158. Q3HandleStorage_New                (Handle                 handle,
  159.                                  unsigned long             validSize);
  160.  
  161. EXTERN_API_C( TQ3Status )
  162. Q3HandleStorage_Set                (TQ3StorageObject         storage,
  163.                                  Handle                 handle,
  164.                                  unsigned long             validSize);
  165.  
  166. EXTERN_API_C( TQ3Status )
  167. Q3HandleStorage_Get                (TQ3StorageObject         storage,
  168.                                  Handle *                handle,
  169.                                  unsigned long *        validSize);
  170.  
  171. /******************************************************************************
  172.  **                                                                             **
  173.  **                                Macintosh Storage Prototypes                 **
  174.  **                                                                             **
  175.  *****************************************************************************/
  176. EXTERN_API_C( TQ3StorageObject )
  177. Q3MacintoshStorage_New            (short                     fsRefNum);
  178.  
  179. /* Note: This storage is assumed open */
  180. EXTERN_API_C( TQ3Status )
  181. Q3MacintoshStorage_Set            (TQ3StorageObject         storage,
  182.                                  short                     fsRefNum);
  183.  
  184. EXTERN_API_C( TQ3Status )
  185. Q3MacintoshStorage_Get            (TQ3StorageObject         storage,
  186.                                  short *                fsRefNum);
  187.  
  188. EXTERN_API_C( TQ3ObjectType )
  189. Q3MacintoshStorage_GetType        (TQ3StorageObject         storage);
  190.  
  191.  
  192. /******************************************************************************
  193.  **                                                                             **
  194.  **                            Macintosh FSSpec Storage Prototypes                 **
  195.  **                                                                             **
  196.  *****************************************************************************/
  197. EXTERN_API_C( TQ3StorageObject )
  198. Q3FSSpecStorage_New                (const FSSpec *            fs);
  199.  
  200. EXTERN_API_C( TQ3Status )
  201. Q3FSSpecStorage_Set                (TQ3StorageObject         storage,
  202.                                  const FSSpec *            fs);
  203.  
  204. EXTERN_API_C( TQ3Status )
  205. Q3FSSpecStorage_Get                (TQ3StorageObject         storage,
  206.                                  FSSpec *                fs);
  207.  
  208. #endif  /* TARGET_OS_MAC */
  209.  
  210. #if TARGET_OS_WIN32
  211. /******************************************************************************
  212.  **                                                                             **
  213.  **                            Win32 HANDLE Storage Prototypes                     **
  214.  **                                                                             **
  215.  *****************************************************************************/
  216. EXTERN_API_C( TQ3StorageObject )
  217. Q3Win32Storage_New                (HANDLE                 hFile);
  218.  
  219. EXTERN_API_C( TQ3Status )
  220. Q3Win32Storage_Set                (TQ3StorageObject         storage,
  221.                                  HANDLE                 hFile);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3Win32Storage_Get                (TQ3StorageObject         storage,
  225.                                  HANDLE *                hFile);
  226.  
  227. #endif  /* TARGET_OS_WIN32 */
  228.  
  229.  
  230. /******************************************************************************
  231.  **                                                                             **
  232.  **                                    Unix Prototypes                             **
  233.  **                The Unix Storage prototypes have been obsoleted.             **
  234.  **                                                                             **
  235.  *****************************************************************************/
  236.  
  237.  
  238. /******************************************************************************
  239.  **                                                                             **
  240.  **                                Unix Path Prototypes                         **
  241.  **                                                                             **
  242.  *****************************************************************************/
  243. EXTERN_API_C( TQ3StorageObject )
  244. Q3UnixPathStorage_New            (const char *            pathName);
  245.  
  246. /* C string */
  247. EXTERN_API_C( TQ3Status )
  248. Q3UnixPathStorage_Set            (TQ3StorageObject         storage,
  249.                                  const char *            pathName);
  250.  
  251. /* C string */
  252. EXTERN_API_C( TQ3Status )
  253. Q3UnixPathStorage_Get            (TQ3StorageObject         storage,
  254.                                  char *                    pathName);
  255.  
  256. /* pathName is a buffer */
  257.  
  258.  
  259.  
  260.  
  261. #if PRAGMA_ENUM_ALWAYSINT
  262.     #pragma enumsalwaysint reset
  263. #elif PRAGMA_ENUM_OPTIONS
  264.     #pragma option enum=reset
  265. #elif defined(PRAGMA_ENUM_PACK__QD3DSTORAGE__)
  266.     #pragma options(pack_enums)
  267. #endif
  268.  
  269. #if PRAGMA_STRUCT_ALIGN
  270.     #pragma options align=reset
  271. #elif PRAGMA_STRUCT_PACKPUSH
  272.     #pragma pack(pop)
  273. #elif PRAGMA_STRUCT_PACK
  274.     #pragma pack()
  275. #endif
  276.  
  277. #ifdef PRAGMA_IMPORT_OFF
  278. #pragma import off
  279. #elif PRAGMA_IMPORT
  280. #pragma import reset
  281. #endif
  282.  
  283. #ifdef __cplusplus
  284. }
  285. #endif
  286.  
  287. #endif /* __QD3DSTORAGE__ */
  288.  
  289.